home *** CD-ROM | disk | FTP | other *** search
- Path: news.larc.nasa.gov!amiga-request
- From: amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
- Subject: v91i115: Draughts - Draughts game, Part01/01
- Reply-To: RWALLACE%vax1.tcd.ie@CUNYVM.CUNY.EDU
- Newsgroups: comp.sources.amiga
- Message-ID: <comp.sources.amiga:v91i115@ab20.larc.nasa.gov>
- Date: 18 May 91 02:12:29 GMT
- Approved: tadguy@uunet.UU.NET (Tad Guy)
- X-Mail-Submissions-To: amiga@uunet.uu.net
- X-Post-Discussions-To: comp.sys.amiga.misc
-
- Submitted-by: RWALLACE%vax1.tcd.ie@CUNYVM.CUNY.EDU
- Posting-number: Volume 91, Issue 115
- Archive-name: games/draughts/part01
-
- [ includes uuencoded executable ...tad ]
-
- Run from operating system prompt by typing "draughts <ply>"
- where <ply> is the number of half-moves you want the program to look ahead.
- The higher the number the better the quality of the game but the slower the
- program will play. 3 or 4 is probably about the limit for most people's
- patience, but you could use higher numbers for batch-mode play. The program
- always takes first move (it plays black, you play white). It will display
- the board on the screen and the cursor below that. You can then type your
- move by typing the coordinates of the start and finish squares, row first
- e.g. one possible starting move is 5140. Note that you must type the 4 digits
- with no spaces or anything between them, exactly as shown. Also when taking
- one of the computer's pieces, the destination square is on top of the enemy
- piece not beyond it even though your piece will actually be jumping over the
- enemy piece. Press CTRL-C to stop the program.
-
- Exceptions to the standard rules of draughts are:
- - No repeat taking in one move
- - You don't have to take an enemy piece if the opportunity arises
- - If one side can make no legal move, the game does not end
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 1)."
- # Contents: draughts.c draughts.uu
- # Wrapped by tadguy@ab20 on Fri May 17 22:12:07 1991
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'draughts.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'draughts.c'\"
- else
- echo shar: Extracting \"'draughts.c'\" \(7553 characters\)
- sed "s/^X//" >'draughts.c' <<'END_OF_FILE'
- X/*
- XDraughts game by Russell Wallace 29 September 1990
- XStandard ANSI C so it should compile on any system
- XUses Alpha-Beta minimax algorithm
- X
- XRun from operating system prompt by typing "draughts <ply>"
- Xwhere <ply> is the number of half-moves you want the program to look ahead.
- XThe higher the number the better the quality of the game but the slower the
- Xprogram will play. 3 or 4 is probably about the limit for most people's
- Xpatience, but you could use higher numbers for batch-mode play. The program
- Xalways takes first move (it plays black, you play white). It will display
- Xthe board on the screen and the cursor below that. You can then type your
- Xmove by typing the coordinates of the start and finish squares, row first
- Xe.g. one possible starting move is 5140. Note that you must type the 4 digits
- Xwith no spaces or anything between them, exactly as shown. Also when taking
- Xone of the computer's pieces, the destination square is on top of the enemy
- Xpiece not beyond it even though your piece will actually be jumping over the
- Xenemy piece. Press CTRL-C to stop the program.
- X
- XExceptions to the standard rules of draughts are:
- X- No repeat taking in one move
- X- You don't have to take an enemy piece if the opportunity arises
- X- If one side can make no legal move, the game does not end
- X
- XThis code is in the public domain.
- X*/
- X
- X#include <stdio.h>
- X#include <limits.h>
- X#include <string.h>
- X#include <stdlib.h>
- X
- Xtypedef struct
- X{
- X int p[8][8];
- X} board;
- X
- Xtypedef struct
- X{
- X int i,j,dir;
- X} trackMove;
- X
- X#define TRUE 1
- X#define FALSE 0
- X
- Xboard startboard =
- X{
- X 1,0,1,0,1,0,1,0,
- X 0,1,0,1,0,1,0,1,
- X 1,0,1,0,1,0,1,0,
- X 0,0,0,0,0,0,0,0,
- X 0,0,0,0,0,0,0,0,
- X 0,-1,0,-1,0,-1,0,-1,
- X -1,0,-1,0,-1,0,-1,0,
- X 0,-1,0,-1,0,-1,0,-1,
- X};
- X
- Xint ply;
- X
- Xisvalidmove (board *move)
- X{
- X return (move->p[0][0] != INT_MIN);
- X}
- X
- Xvoid inctrackmove (trackMove *trackmove)
- X{
- X trackmove->dir = 0;
- X trackmove->j += 2;
- X if (trackmove->j >= 8)
- X {
- X if (trackmove->j == 8)
- X trackmove->j = 1;
- X else
- X trackmove->j = 0;
- X trackmove->i++;
- X }
- X}
- X
- Xsign (int x)
- X{
- X if (x < 0)
- X return -1;
- X if (x > 0)
- X return 1;
- X return 0;
- X}
- X
- Xmakemove (int i,int j,int di,int dj,board *move)
- X{
- X if (i+di < 0 || i+di > 7 || j+dj < 0 || j+dj > 7)
- X return TRUE;
- X if (sign (move->p[i][j]) == sign (move->p[i+di][j+dj]))
- X return TRUE;
- X if (move->p[i+di][j+dj] == 0)
- X {
- X if (move->p[i][j] == 1 && i+di == 7)
- X move->p[i][j] = 2;
- X if (move->p[i][j] == -1 && i+di == 0)
- X move->p[i][j] = -2;
- X move->p[i+di][j+dj] = move->p[i][j];
- X move->p[i][j] = 0;
- X return FALSE;
- X }
- X if (i+di+di < 0 || i+di+di > 7 || j+dj+dj < 0 || j+dj+dj > 7)
- X return TRUE;
- X if (move->p[i+di+di][j+dj+dj] != 0)
- X return TRUE;
- X if (move->p[i][j] == 1 && i+di+di == 7)
- X move->p[i][j] = 2;
- X if (move->p[i][j] == -1 && i+di+di == 0)
- X move->p[i][j] = -2;
- X move->p[i+di][j+dj] = 0;
- X move->p[i+di+di][j+dj+dj] = move->p[i][j];
- X move->p[i][j] = 0;
- X return FALSE;
- X}
- X
- Xvoid findnextmove (board *pos,board *move,trackMove *trackmove,int minimize)
- X{
- X int i,j;
- X static di[] = { 1,1,-1,-1 };
- X static dj[] = { -1,1,-1,1 };
- X *move = *pos;
- XBIGLOOP:
- X if (trackmove->i >= 8)
- X {
- X move->p[0][0] = INT_MIN;
- X return;
- X }
- XLOOP:
- X i = trackmove->i;
- X j = trackmove->j;
- X switch (pos->p[i][j])
- X {
- X case -2:
- X if (!minimize)
- X goto INCMOVE;
- X if (makemove (i,j,di[trackmove->dir],dj[trackmove->dir],move))
- X goto NEXT;
- X goto FINISH;
- X case -1:
- X if (!minimize)
- X goto INCMOVE;
- X if (trackmove->dir < 2)
- X trackmove->dir = 2;
- X if (makemove (i,j,di[trackmove->dir],dj[trackmove->dir],move))
- X goto NEXT;
- X goto FINISH;
- X case 1:
- X if (minimize || trackmove->dir > 1)
- X goto INCMOVE;
- X if (makemove (i,j,di[trackmove->dir],dj[trackmove->dir],move))
- X goto NEXT;
- X goto FINISH;
- X case 2:
- X if (minimize)
- X goto INCMOVE;
- X if (makemove (i,j,di[trackmove->dir],dj[trackmove->dir],move))
- X goto NEXT;
- X goto FINISH;
- X }
- XINCMOVE:
- X inctrackmove (trackmove);
- X goto BIGLOOP;
- XNEXT:
- X trackmove->dir++;
- X if (trackmove->dir > 3)
- X goto INCMOVE;
- X goto LOOP;
- XFINISH:
- X trackmove->dir++;
- X if (trackmove->dir > 3)
- X inctrackmove (trackmove);
- X}
- X
- Xvoid findfirstmove (board *pos,board *move,trackMove *trackmove,int minimize)
- X{
- X trackmove->i = trackmove->j = trackmove->dir = 0;
- X findnextmove (pos,move,trackmove,minimize);
- X}
- X
- Xminimax (board *pos,int level,int alpha,int beta)
- X{
- X board move;
- X trackMove trackmove;
- X if (level == ply)
- X {
- X int i,j;
- X int value = 0;
- X for (i=0 ; i<8 ; i++)
- X for (j=0 ; j<8 ; j++)
- X value += pos->p[i][j];
- X return value;
- X }
- X findfirstmove (pos,&move,&trackmove,level & 1);
- X if (level & 1) /* Minimizing level */
- X {
- X while (alpha < beta && isvalidmove (&move))
- X {
- X int temp = minimax (&move,level+1,alpha,beta);
- X if (temp < beta)
- X beta = temp;
- X findnextmove (pos,&move,&trackmove,TRUE);
- X }
- X return beta;
- X }
- X else /* Maximizing level */
- X {
- X while (alpha < beta && isvalidmove (&move))
- X {
- X int temp = minimax (&move,level+1,alpha,beta);
- X if (temp > alpha)
- X alpha = temp;
- X findnextmove (pos,&move,&trackmove,FALSE);
- X }
- X return alpha;
- X }
- X}
- X
- Xvoid printboard (board *pos)
- X{
- X int i,j;
- X printf ("\n 01234567\n");
- X for (i=0 ; i<8 ; i++)
- X {
- X printf ("%c",i + '0');
- X for (j=0 ; j<8 ; j++)
- X {
- X switch (pos->p[i][j])
- X {
- X case -2:
- X printf ("W");
- X break;
- X case -1:
- X printf ("w");
- X break;
- X case 0:
- X if ((i + j) & 1)
- X printf (" ");
- X else
- X printf (".");
- X break;
- X case 1:
- X printf ("b");
- X break;
- X case 2:
- X printf ("B");
- X break;
- X }
- X }
- X printf ("\n");
- X }
- X printf ("\n");
- X}
- X
- Xmain (int argc,char **argv)
- X{
- X int i,j,newi,newj,di,dj;
- X static char buf[256];
- X static board move;
- X static board bestmove;
- X static trackMove trackmove;
- X static board pos;
- X int alpha;
- X printf ("Draughts by Russell Wallace " __DATE__ "\n"
- X "See source code for details\n");
- X if (argc != 2 || argv[1][0] == '?')
- X return 1;
- X ply = atoi (argv[1]);
- X for (;;)
- X {
- X pos = startboard;
- X for (;;)
- X {
- X alpha = INT_MIN;
- X newi = newj = FALSE;
- X for (i=0 ; i<8 ; i++)
- X for (j=0 ; j<8 ; j++)
- X {
- X if (pos.p[i][j] < 0)
- X newi = TRUE;
- X if (pos.p[i][j] > 0)
- X newj = TRUE;
- X }
- X if (!newi)
- X {
- X printf ("I win\n");
- X break;
- X }
- X if (!newj)
- X {
- X printf ("You win\n");
- X break;
- X }
- X bestmove = pos;
- X findfirstmove (&pos,&move,&trackmove,FALSE);
- X while (isvalidmove (&move))
- X {
- X int newalpha = minimax (&move,1,alpha,INT_MAX);
- X if (newalpha > alpha)
- X {
- X alpha = newalpha;
- X bestmove = move;
- X }
- X findnextmove (&pos,&move,&trackmove,FALSE);
- X }
- X pos = bestmove;
- X printboard (&pos);
- XGET_MOVE:
- X gets (buf);
- X if (strlen (buf) != 4)
- X goto ILLEGAL_MOVE;
- X i = buf[0] - '0';
- X j = buf[1] - '0';
- X newi = buf[2] - '0';
- X newj = buf[3] - '0';
- X if ( i < 0 || i > 7 || newi < 0 || newi > 7 ||
- X j < 0 || j > 7 || newj < 0 || newj > 7)
- X goto ILLEGAL_MOVE;
- X if ((i-newi != 1 && i-newi != -1) || (j-newj != 1 && j-newj != -1))
- X goto ILLEGAL_MOVE;
- X if (pos.p[i][j] >= 0)
- X goto ILLEGAL_MOVE;
- X if (pos.p[newi][newj] < 0)
- X goto ILLEGAL_MOVE;
- X if (pos.p[newi][newj] == 0)
- X {
- X if (newi == 0)
- X pos.p[i][j] = -2;
- X pos.p[newi][newj] = pos.p[i][j];
- X pos.p[i][j] = 0;
- X }
- X else
- X {
- X di = newi - i;
- X dj = newj - j;
- X if (newi+di < 0 || newi+di > 7 || newj+dj < 0 || newj+dj > 7)
- X goto ILLEGAL_MOVE;
- X if (pos.p[newi+di][newj+dj] != 0)
- X goto ILLEGAL_MOVE;
- X if (newi+di == 0)
- X pos.p[i][j] = -2;
- X pos.p[newi+di][newj+dj] = pos.p[i][j];
- X pos.p[newi][newj] = 0;
- X pos.p[i][j] = 0;
- X }
- X }
- X }
- XILLEGAL_MOVE:
- X printf ("Illegal move\n");
- X goto GET_MOVE;
- X}
- END_OF_FILE
- if test 7553 -ne `wc -c <'draughts.c'`; then
- echo shar: \"'draughts.c'\" unpacked with wrong size!
- fi
- # end of 'draughts.c'
- fi
- if test -f 'draughts.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'draughts.uu'\"
- else
- echo shar: Extracting \"'draughts.uu'\" \(13612 characters\)
- sed "s/^X//" >'draughts.uu' <<'END_OF_FILE'
- Xbegin 644 draughts
- XM```#\P`````````#``````````(```7J```"C0```F\```/I```%ZDCG?OXD4
- XM2"0`2?D`````+'@`!$?Y```#/'(`(#P```&@8`(FP5'(__PI3P-\*4X#=$*LT
- XM`WAP`"(\```P`$ZN_LY#^@&4<`!.KOW8*4`)N&8&<&1@``$F)FX!%"EK`)@#=
- XM<$JK`*QG``"2(`^0KP`X!H````"`*4`#0"!K`*S1R-'((F@`$-/)T\D@`G(`Q
- XM$ADI20.$T(%>@`)`__PI0`.,2.=`0"(\``$``4ZN_SI*@&8,(#P```/H+P!GE
- XM``$0($`I0`.(3-\"`B`"4X#4@1&R```@`E."4<C_]A&\`"`@`E."$;P`(B`";
- XM$;$@`"`!4<K_^!"\`"(O"&!R*6L`.@-`<']2@-&L`T!!ZP!<3J[^@$'K`%Q.V
- XMKOZ,*4`#>"\`)$`@*@`D9Q(L;`FX($`B*```*4$#<$ZN_X(B*@`@9QHD/````
- XM`^U.KO_B*4`#@&<*Y8@@0"=H``@`I"!L`W@O"$AL`SP@:``D*6@`!`.$3KH`S
- XML$ZZ`'QP`&`$("\`!"\`("P#:&<$($!.D$ZZ`%PL>``$(FP)N$ZN_F).N@"&O
- XM2JP#>&<<(BP#@&<$3J[_W"QX``1.KO]\(FP#>$ZN_H9@#B`L`XQG"")L`XA..
- XMKO\N(!\N;`-\3-]_?DYU9&]S+FQI8G)A<GD```!@``\"3G$``"!O``1@``3*X
- XM3G$``$CG,#(L;P`H)&\`&"9O`!PD+P`@)B\`)$ZN_J1,WTP,3G4``$YU3G5(-
- XMYP<P+@`F2"P!(`=.NA3*)$`@"F8$</]@,`@J``,``V<.2'@``B`'<@!.N@[,5
- XM6$\@*@`$(@8@2TZZ$,HJ`$JL`U1G!'#_8`(@!4S?#.!.=0```````'!A2.<#?
- XM$"9O`!`@2TH89OQ3B)'++`A^`!X;2H=G+%.L`69M$B!L`5Y2K`%>(`<0@'(``
- XM$@!@X"`'<@`2`"`!0>P!6DZZ!KHB`,</]![`%:3KH&K"`&3-\(P$YU````)
- XM``````!P84Y5_\!(YR<P)D@D27X`?`!Z`'``&WP`(/_[<@`K0?_V=/\K0O_R-
- XM0>W_T!M`__$;0/_\*T'_Y"M!_^@K2/_,$!-G+'(`$@`$00`@9Q1706<444%GD
- XM"%5!9A9^`6`.?`%@"GH!8`8;?``!__Q2BV#0$!-R,+`!9@92BQM!__MP*K`3A
- XM9@P@4EB2*U#_]E*+8`P@2T/M__9.N@MVU\`0$W(NL`%F(%*+<"JP$V8,(%)8G
- XMDBM0__)2BV`,($M#[?_R3KH+3M?`$!-R;+`!9@H;?``!__%2BV`(<FBP`68"M
- XM4HL0&W(`$@`;0/_P!$$`4&<``69106<``70$00`+9P`!^E-!9R0$00`+9P`!P
- XM#%-!9P`!1E=!9P`!JE5!9P``WE=!9P`!2&```>A*+?_Q9P@@4EB2(!!@!B!2>
- XM6)(@$"M`_^QL"G(!1*W_["M!_^@@+?_H9P1R+6`*2@9G!'(K8`)R(!M!_]!R9
- XM`!(&@(%R`!(%@(%G"%*M_\Q2K?_D("W_["!M_\Q.N@H(*T#_R"`M__)*@&H&2
- XM<@$K0?_R("W_R"(M__*2@$CM``+_Q&\T(&W_S-'!+T@`&"!M_\PB;P`83KH,A
- XM-G``$"W_^R(M_\0@;?_,8`(0P%.!9/H@+?_R*T#_R-&M_^1![?_0*TC_S$H'(
- XM9P`!)!M\`"#_^V```1I*+?_Q9P@@4EB2(!!@!B!26)(@$"M`_^Q@`/]F2BW_=
- XM\6<((%)8DB`08`8@4EB2(!`K0/_L2BW__&<2(&W_S!#\`#!R`2M!_^0K2/_,S
- XM(&W_S$ZZ"6@K0/_(8`#_-B`M__)*@&H&<`@K0/_R&WP``?_Q2BW_\6<((%)8,
- XMDB`08`8@4EB2(!`K0/_L2BW__&<6(&W_S!#\`#`0_`!X<@(K0?_D*TC_S"!M?
- XM_\Q.N@E(*T#_R`@M``7_\&<`_MA![?_03KH('F``_LP@4EB2(E`K2?_,9@A!-
- XM^@#&*TC_S"!M_\Q*&&;\4XB1[?_,*TC_Y"`M__)*@&LDL<!O("M`_^1@&G`!D
- XM*T#_Y"!26)(@$!M`_]!"+?_18`1P`&!Z("W_Y"(M__:R@&P(=``K0O_V8`216
- XMK?_V2@=G+E.M_^1M%'``(&W_S!`8*TC_S"!M``A.DF4ZW_]FT\<``0+?_[8
- XM(&T`"$Z08.Q3K?_V;0YP`!`M__L@;0`(3I!@[%.M_^1M%'``(&W_S!`8*TC_;
- XMS"!M``A.DF(`M,WPSD3EU.=0``3E7_]$CG`3`F2"1)*VT`"/_V'AI*!V<N]
- XM<"6^`&8@L!)F!%**8!@O"R!*0^W_]F$`_#Y83RM`__IG!"1`8-1P`!`'3I-@3
- XMS$S?#(!.74YU3E7_Z$CG(3(F2`RL````(`D:;```TA`3<B"P`6<,<@FP`6<&6
- XM<@JP`68$4HM@Z!`39P``M"(L"1KE@5*L"1I![`DBT<$D2'(BL`%F<E*+($LD1
- XMB"M(_^P0$W(BL`%G4'(JL`%F/E*+<``0$P1``$5G"`1```EG$&`<(&W_[!#\B
- XM`!<K2/_L8!@@;?_L$/P`"BM(_^Q@"B!M_^P0TRM(_^Q2BV"T(&W_[!#;*TC_"
- XM[&"H4HL@;?_L0A@K2/_L8`#_3B2+$!-G%G(@L`%G$'()L`%G"G(*L`%G!%*+)
- XM8.9*$V8"8`9"&V``_R8@+`D:9@8@;`-X8`1![`DB*4@)'DJ`9@``@$/Z`21-H
- XM[`C@+-DLV2S9+-D\D2)L`W@@:0`D+T@`%'`H0>P(X")O`!0B:0`$3KH&!D'L8
- XM".`B""0\```#[BQL";A.KO_B*4`'I"E`!ZQR$"E!!Z@I0`>T*4$'L.6`*T#_X
- XM\)/)+'@`!$ZN_MH@;?_P(D`C:``(`*1^`"M`__1@*BQL";A.KO_**4`'I$ZNQ
- XM_\0I0`>L0?H`I"(()#P```/M3J[_XBE`![1^$"`'`$"``8&L!Z`@!P!`@`*!M
- XMK`>H`*P``(`#![!*K`&@9P1P`&`&(#P``(``+@!"K`%4(`<`0``!*4`!4'`!Y
- XM*4`!=B`'`$```BE``7)P`BE``9@@!P!``(`I0`&40?H-#BE(`VP@+`D:(&P)X
- XM'DZZ`#YP`$ZZ"@!,WTR$3EU.=6-O;CHQ,"\Q,"\S,C`O.#`O`"H`````````N
- XM``````````````````````````!.^0``!N8````````O"R9(2JL`%&<,""L`*
- XM`P`;9@1P`&`R("P#.$ZZ".0G0``$)T``$&8*<`PI0`FT</]@%B=L`S@`%'#SC
- XMP:L`&'``)T``#"=```@F7TYU````````````````3E7_[$CG+Q`N`"9(*`=P5
- XM,<"K`!AG!G#_8``"1@@K``<`&E;`1`!(@$C`+`!*JP`49GH(*P`"`!MF<G``C
- XM)T``#'+_OH%G``(:($M.NO]<2H!G#`CK``4`&W#_8``"!`CK``$`&TH&9PX@-
- XM*P`4(@!$@2=!``Q@""`K`!0G0``,4ZL`#&T2(&L`!%*K``0@!Q"`<@`2`&`08
- XM(`=R`!(`(`$@2V$`_UXB`"`!8``!M@@K``(`&V=0</^^@&8&<`!@``&B(`<;D
- XM0/__2@9G'G`*OH!F&'`"*T#_\"(K`!Q!^@&,P4%.NO?**@!@%G`!*T#_\"(K)
- XM`!Q![?__P4%.NO>R*@!^_V```,X(ZP`!`!M*!F=*</^^@&=$5*L`#'(*OH%FD
- XM'B!K``12JP`$$+P`#2(K``Q*@6L&($MA`/[*4JL`#"!K``12JP`$(`<0@"`K+
- XM``Q*@&H&(`=@``$,?O\@*P`$D*L`$"M`__!G:`@K``8`&F=,2'@``B`K`!QR[
- XM`$ZZ!BI83RM`_^Q*!F<T4ZW_[&TN0J<@*P`<(BW_[$ZZ!@P@*P`<<@%![?_].
- XM3KH%#EA/2JP#5&8*$"W__7(:L`%GS"`K`!PB+?_P(&L`$$ZZ]N0J`&`">@!P`
- XM_[J`9@@(ZP`%`!M@#+JM__!G!@CK``0`&TH&9PXB*P`4)`%$@B="``Q@&`@KL
- XM``(`&V<(<@`G00`,8`@B*P`4)T$`#"!K`!`G2``$OH!G*%.K``QM$B!K``12T
- XMJP`$(`<0@'(`$@!@$"`'<@`2`"`!($MA`/V\(@!P,,"K`!AG!'#_8`QP_[B`=
- XM9@1P`&`"(`1,WPCT3EU.=0T*``!(YP<0)D@(*P`'`!I6P$0`2(!(P"X`<##`,
- XMJP`89PI"JP`(</]@``$X""L`!P`;9Q`(*P`&`!MG"'#_($M.NOU62JL`%&8R6
- XM0JL`"`@K``(`&V<0<`$G0``40>L`("=(`!!@<B!+3KK\UDJ`9V@(ZP`%`!MPF
- XM_V```.A*!V=85*L`""`K``AN3B!K``12JP`$?``<$"`&<@V0@6<(<@V0@6<BC
- XM8"Q3JP`(;1`@:P`$4JL`!'``$!!@``"H($MA`/]$8```G@CK``0`&W#_8```E
- XMDB`&8```C`@K``$`&V9*".L````;("L`'"(K`!0@:P`03KH#6"H`2H5J!@CK3
- XM``4`&TJ%9@8(ZP`$`!M*A6\:2@=G"B`%1(`G0``(8`0G10`((&L`$"=(``1PU
- XM,L"K`!AG%DH'9PAP_R=```A@!G``)T``"'#_8!I3JP`(;0X@:P`$4JL`!'``_
- XM$!!@!B!+80#^I$S?".!.=4CG!P`N`"`L`2!3@"P`2D9K+B`&2,#G@$'L!Z`J6
- XM,`@`2@5G&`@%``1F$B`&2,#G@$'L!Z`@,`@$3KH&GE-&8,X@!TZZ\_),WP#@F
- XM3G4```````!P82YL`WQ.N@:B<!1.N@4T``````````!P84CG(#`F2"1+$!)G8
- XM)'(`$@!![`(U"#```1@`9PIR`!(`=""2@F`$<@`2`!2!4HI@V"`+3-\,!$YUT
- XM````````<&%.5?_X2.<#,"9()$DN`"!*2AAF_%.(D<HL""!+2AAF_%.(D<L@T
- XM"")+T\`K2?_XO(=C`BP'(`8@2F`"$MA3@&3Z(&W_^$(P:``@"TS?#,!.74YU)
- XM```O"R9(<``0$T'L`C4(,``#"`!G!%*+8.P@"R9?3G4``$Y5__0B3W(*3KH&Z
- XMT`9!`#`2P4J`9O`@"1#AO\EF^D(0D(].74YU``!.5?_T(D\B``)!``<&00`P%
- XM$L'FB&;P(`D0X;_)9OI"$)"/3EU.=0``,#$R,S0U-C<X.6%B8V1E9E%/(D\R=
- XM``)!``\2^Q#DZ(AF\B`)(@\0X;*)9OI"$)"!4$].=2\)(DAR`'``+P(,$``K"
- XM9P8,$``M9@)22!`8!```,&T2#```"6X,)`'E@=*"TH'2@F#!$`+68"1($D'
- XM'R`(4X`@7R"!D(E.=4Y5_^1(YP$R+@`K2/_D2H=N!G#_8```TG`(OH!D`BX`R
- XM(`=6@"X``D?__"1M_^0@+?_DT(??K`$T0>P!,"90*T#_\"M(__0@"V<``)`@`
- XM2R`K``31P$CM`0#_[")M__"WR6,0)(LE1P`$+&W_]"R*<`!@=K?)9AHL4R2.5
- XM("L`!"(`TH<E00`$+&W_]"R*<`!@6+7(9`B?K`$T</]@3+7(9BH@$V<,L\!CK
- XM")^L`31P_V`XWZL`!"`39PZSP&8*("D`!-&K``0FD7``8!XK2__T*VW_[/_HM
- XM)E-@`/]N(&W_]""*0I(E1P`$<`!,WTR`3EU.=0```````'!A2.<',"X`)D@L(
- XM`2`'3KH&PB1`(`IF!'#_8!H@*@`$(@8@2TZZ`XPJ`$JL`U1G!'#_8`(@!4S?4
- XM#.!.=0``+P<N`%*L":13K`%F;1(@;`%>4JP!7B`'$(!R`!(`8!(@!W(`$@`@C
- XM`4'L`5I.NOCB(@`N'TYU3E4``"\+)FT`"$*L":1(;0`,0?K_MB)+3KKUNG#_T
- XM0>P!6DZZ^+8@+`FD)FW__$Y=3G5*@&\6L\AE#-'`T\`3(%.`9OI.=1+84X!F>
- XM^DYU2.<`,B9L":@@"V<4)%,B2R`I``@L>``$3J[_+B9*8.B1R"E(":PI2`FHF
- XM3-],`$YU2.</$"X`+`$J+P`8(`=.N@70)D`@"V8$</]@'"\%("L`!"(&3KH"S
- XM*EA/*`!*K`-49P1P_V`"(`1,WPCP3G4``````````'!A2.<!,BX`<`S>@"`'N
- XM<@`L>``$3J[_.B9`(`MF!'``8#@G1P`(1>P)J"!J``0G2``$D<@FB$J29@(D:
- XMBR`J``1G!")`(HLE2P`$2JP!)&8$*4L!)$'K``P@"$S?3(!.=0``````````_
- XM````````2.<!,"9()$M3K`%`;0YP`"!L`3P0&"E(`3Q@"$'L`3A.NOGR+@!PF
- XM_[Z`9Q)P"KZ`9@9"&R`*8!(@!Q;`8,JURV8$<`!@!$(;(`I,WPR`3G5(YP,P;
- XM+@!*AVX&<`!@``"@<`B^@&0"+@`@!U:`+@`"1__\1>P!,"92(`MG0"`K``2P'
- XMAVTRL(=F#"!3)(B?K`$T(`M@:B`K``20AW((L(%E%B!+T<<DB"1()),E0``$J
- XMGZP!-"`+8$@D2R938+P@!R(L`:30@5.`3KH">"(L`:1.N@)0+`!0AB`&5H`L.
- XM``)&__P@!DZZ_K`F0"`+9Q`@!B!+3KK\<B`'80#_6&`"<`!,WPS`3G4`````9
- XM``!P84CG`Q`N`$?L`3@@"V<P""L``@`;9B0(*P`!`!MG'"`K``20JP`0+`!*K
- XMAF<.("L`'"(&(&L`$$ZZ[Q`F4V#,(`=.NOHJ3-\(P$YU``!(YS<2+@`F2"P!;
- XM2JP#;&<$3KH#_D*L`U0B!R0+)@8L;`FX3J[_T"H`</^Z@&8.3J[_?"E``U1PT
- XM!2E`";0@!4S?2.Q.=4CG/P(N`"P!*B\`($JL`VQG!$ZZ`[A"K`-4(`53@"('O
- XM)`8F`"QL";A.KO^^*`!P_[B`9@Y.KO]\*4`#5'`6*4`)M"`%2H!G"E.`9PI3_
- XM@&<,8!@@!F`4(`30AF`.(@=T`"8"+&P)N$ZN_[Y,WT#\3G5(YS<2+@`F2"P!O
- XM2JP#;&<$3KH#2D*L`U0B!R0+)@8L;`FX3J[_UBH`</^Z@&8.3J[_?"E``U1P&
- XM!2E`";0@!4S?2.Q.=4CG`0(N`$JL`VQG!$ZZ`PHB!RQL";A.KO_<<`!,WT"`K
- XM3G4``$Y5_ZA(YP$20_H`B'``+'@`!$ZN_=@F0"`+9@9P%$ZZ^.1^`"!L`X0>1
- XM*/__(`=#[?^P8`(2V%.`9/I"-7BP0>W_L"E(`;0O"TAX`"A(>`#Z2&P!T'``<
- XM+P!P`"(`D<A#[`&\3KKM5'`43KKXFDSM2(#_G$Y=3G4J*B!3=&%C:R!/=F5R=
- XM9FQO=R`J*@``15A)5```:6YT=6ET:6]N+FQI8G)A<GD`````````<&%(YS``<
- XM)``F`4A"2$/$P<;`P,'40TA"0D+0@DS?``Q.=4J`:@``'D2`2H%J```,1(%A:
- XM```@1(%.=6$``!A$@$2!3G5*@6H```Q$@6$```9$@$YU+P)(030!9@``(DA`@
- XM2$%(0C0`9P``!H3!,`)(0#0`A,$P`DA",@(D'TYU+P-V$`Q!`(!D```&X9E1<
- XM0PQ!"`!D```&Z9E90PQ!(`!D```&Y9E50TI!:P``!N.94T,T`.:H2$)"0N:J[
- XM2$.`P38`,`(T`TA!Q,&0@F0```A30]"!9/YR`#(#2$/GN$A`P4$F'R0?3G5.T
- XM5?^82.<S,GX`(&P#A!XH__]P3[Z`;P(N`"`'0^W_KV`"$MA3@&3Z0C5XKY/)M
- XM+'@`!$ZN_MHF0"`K`*QG2.6`)$`L*@`X2H9F!"PK`*!*AF<T(@9!^@"T)`AVT
- XM"RQL";A.KO_0($=2AR`(&[P`"@BO(@9![?^O)`@F!RQL";A.KO_0</]@4$/Z,
- XM`(YP`"QX``1.KOW8*T#_FF8$</]@.$'M_Z\I2`($+RW_FDAX`#Q(>`#Z2&P"@
- XM($AL`@QP`"(`D<A#[`'X3KKK8D_O`!13@&<$</]@`G``3-],S$Y=3G4J*B!55
- XM<V5R($%B;W)T(%)E<75E<W1E9"`J*@``0T].5$E.544``$%"3U)4`"HJ*B!"E
- XM<F5A:SH@`&EN='5I=&EO;BYL:6)R87)Y`"\'+@!P`"E``U1*AVLBOJP!(&P<(
- XM(`?G@$'L!Z!*L`@`9PX@!^>`0>P'H-'`(`A@"'`)*4`)M'``+A].=4CG`0)P=
- XM`"(\```P`"QX``1.KO[.+@`"AP``,`!*AV<<2JP#;&<6(&P#;$Z02H!F`F`*0
- XM0JP#;'`43KKUUDS?0(!.=6&\3G4``$Y5__PO"R9((`MF!'``8!8@2TZZ]K0F&
- XM0"!+0^W__$ZZ]TP@+?_\)E].74YU```#[`````$````!```)$@````(````"L
- XM````%`````H````````#\@```^D```*-O^P#0&4`"@XO"R9(#).`````5L!$:
- XM`$B`2,`F7TYU"B`P,3(S-#4V-PH`)6,``%<`=P`@`"X`8@!"``H`1')A=6=H5
- XM=',@8GD@4G5S<V5L;"!786QL86-E("!/8W0@(#@@,3DY,`I3964@<V]U<F-EN
- XM(&-O9&4@9F]R(&1E=&%I;',*`$D@=VEN"@``66]U('=I;@H``$EL;&5G86P@"
- XM;6]V90H`O^P#0&4`"6Q(YR`0)DAP`"=```A4JP`$(BL`!'0(LH)M$E&!9@ARJ
- XM`2=!``1@!"=```12DTS?"`1.=;_L`T!E``DR+P<N`$J':@1P_V`*2H=O!'`!:
- XM8`)P`"X?3G5.5?_\O^P#0&4`"0Q(YR\0+@`L`2HO`"0H+P`H)D@@!="';11R*
- XM!["!;@X@!M"$;0@@!-"&L(%O!G`!8``!WB`'ZX`@2]'`(`;E@-'`(!!ACB('E
- XMTH7K@2!+T<$B!M*$Y8'1P2]``!@@$&$`_W0B+P`8LH!F!G`!8``!HB`%T(<OG
- XM0``8ZX`@2]'`(`30AN6`T<!*D&8``)8@!^N`($O1P"`&Y8#1P'`!L)!F&G('9
- XMLJ\`&&82)`?K@B!+T<(D!N6"T<)T`B""(@?K@2!+T<$B!N6!T<%R_[*09A@D*
- XM!=2'9A(D!^N"($O1PB0&Y8+1PG3^(((D!=2'ZX(@2]'")`34AN6"T<(D!^N"I
- XM(DO3PB0&Y8+3PB"1)`?K@B!+T<(D!N6"T<)T`"""(`)@``#R(`?0A="%;1ARE
- XM!["!;A(@!M"$T(1M"B`&T(30A+"!;P9P`6```,P@!]"%T(7K@"!+T<`@!M"$`
- XMT(3E@-'`2I!G!G`!8```K"`'ZX`@2]'`(`;E@-'`<`&PD&8<(`?0A="%7X!F!
- XM$B`'ZX`@2]'`(`;E@-'`<`(@@"`'ZX`@2]'`(`;E@-'`</^PD&8:(`?0A="%X
- XM9A(@!^N`($O1P"`&Y8#1P'#^((`@!]"%ZX`@2]'`(`;0A.6`T<!P`""`(@?2.
- XMA=*%ZX$@2]'!(@;2A-*$Y8'1P2('ZX$B2]/!(@;E@=/!()$B!^N!($O1P2(&T
- XMY8'1P2"`3-\(]$Y=3G5.5?_XO^P#0&4`!NI(YP<P)D@D22X`($LB2G`_(MA1*
- XMR/_\(&T`"`R0````"&T*)+R`````8``!5"!M``@L$"HH``0@!NN`($O1P"`%A
- XMY8#1P"`05(!G%%.`9T95@&<``(93@&<``+Y@``#J2H=G``#D(&T`""`H``CE?
- XM@$'L`1`O,`@`0>P!`"\P"``@!B(%($IA`/U,4$]*@&<``-I@``#`2H=G``"N+
- XM(&T`"`RH`````@`(;`9P`B%```@@*``(Y8!![`$0+S`(`$'L`0`O,`@`(`8B7
- XM!2!*80#]!E!/2H!G``"48'I*AV9J(&T`""`H``AR`;"!;EP@;0`(("@`".6`/
- XM0>P!$"\P"`!![`$`+S`(`"`&(@4@2F$`_,903TJ`9U1@/$J'9BP@;0`(("@`4
- XM".6`0>P!$"\P"`!![`$`+S`(`"`&(@4@2F$`_)903TJ`9R1@#"!M``AA`/PJ-
- XM8`#^QB!M``A2J``(#*@````#``AO`/[(8-X@;0`(4J@`"`RH`````P`(;P1A7
- XM`/OZ3-\,X$Y=3G5.50``O^P#0&4`!5A(YP$P)D@D22X`<``@;0`((4``""%`%
- XM``0@@"\((`<@2R)*80#^/DSM#(#_]$Y=3G5.5?[HO^P#0&4`!1Q(YP<0)D@N[
- XM`"P!*BT`"+ZL!YQF2G``*T#^\"M`_N@,K0````C^\&PN0JW^["`M_NQR"+"!G
- XM;!HB+?[PZX$@2]'!Y8#1P"`0T:W^Z%*M_NQ@W%*M_O!@R"`M_NA@``"D(`=R`
- XM`<"!2&W^]"!+0^W_`&$`_TA83P@'``!G1+R%;#Q![?\`80#Z@DJ`9S`@!U*`9
- XM+P4B!D'M_P!A`/]<6$\K0/[PL(5L`BH`2&W^]'`!($M#[?\`80#]<EA/8,`@[
- XM!6!"O(5L/$'M_P!A`/H^2H!G,"`'4H`O!2(&0>W_`&$`_QA83RM`_O"PAF\"8
- XM+`!(;?[T<``@2T/M_P!A`/TN6$]@P"`&3-\(X$Y=3G6_[`-`90`$#$CG`Q`FB
- XM2$AZ^@Q.N@0*6$]^`'`(OH!L``"T(`=R,-"!+P!(>OG\3KH#]%!/?`!P"+R`O
- XM;```B"`'ZX`@2]'`(`;E@-'`(!!4@&UL#(`````%;&300#`[``9.^P`$``@`R
- XM%``@`$(`3DAZ^;Q.N@.J6$]@1$AZ^;).N@.>6$]@."`'T(8(````9PQ(>OF>A
- XM3KH#B%A/8")(>OF43KH#?%A/8!9(>OF*3KH#<%A/8`I(>OF`3KH#9%A/4H9@)
- XM`/]T2'KY<DZZ`U183U*'8`#_2$AZ^6).N@-$6$],WPC`3G5.5?_<O^P#0&4``
- XM`R1(YS\P+@`F2$AZ^4!.N@,@6$]P`KZ`9@H@:P`$<#^P$&8&<`%@``+T(&L`*
- XM!$ZZ`OHI0`><0>P``$/L!IQP/R+84<C__"M\@````/_D<``L`"M`__0K0/_PM
- XM<`B\@&P^>@!P"+J`;#(@!NN`0>P&G")(T\`B!>6!T\$D$4J":@9T`2M"__31]
- XMP-'!(!!*@&\&<`$K0/_P4H5@R%*&8+Q*K?_T9@Q(>OCL3KH"AEA/8(9*K?_P$
- XM9@Y(>OCB3KH"=%A/8`#_=$'L!IQ#[`60<#\BV%'(__Q(;`:0<`!![`:<0^P$4
- XMD&$`_-Y83T'L!)!A`/@B2H!G2B\\?____W`!(BW_Y$'L!)!A`/SX6$\K0/_@Z
- XML*W_Y&\4*T#_Y$'L!)!#[`60<#\BV%'(__Q(;`:0<`!![`:<0^P$D&$`^OA8*
- XM3V"J0>P%D$/L!IQP/R+84<C__$'L!IQA`/V^0>P#D$ZZ`>!![`.0(DA*&6;\L
- XM4XF3R++\``1F``&<<``0+`.0+`!R,)R!<``0+`.1*@":@7``$"P#DI"!=``4U
- XM+`.3E(%([0`!__1([0`$__!*AFL``61R![R!;@`!7$J`:P`!5K"!;@`!4$J%4
- XM:P`!2KJ!;@`!1$J":P`!/K2!;@`!."(&DH!V`;*#9P92@68``2@B!9*"LH-G"
- XM!E*!9@`!&B(&ZX%![`:<(DC3P28%Y8/3PR@12H1J``$`ZX`B2-/`Y8+3PB@1S
- XM2H1K``#N(DC3P-/"2I%F/B`M__1F"B)(T\'3PW+^(H'K@")(T\`@+?_P(@#EZ
- XM@=/!(@;K@21(U<$D!>6"U<(BDB)(T\'3PG(`(H%@`/W>("W_]"(`DH8D+?_PC
- XM)@*6A2@`V(%([0`"_^Q([0`(_^AM``""<`>X@&YZ*`+8@VUT*`+8@[B`;FP@M
- XM+?_T*`#8@2]$`"#KA")(T\0H`MB#Y833Q$J19DY*KP`@9A(H!NN$(DC3Q"@%4
- XMY833Q'C^(H32@.N!(DC3P=:"Y8/3PR(&ZX$D2-7!)@7E@]7#(I+K@")(T\#EP
- XM@M/"<``B@-'!T<,@@&``_3I(>O:43KH`'%A/8`#^/$S?#/Q.74YU3OD```V8$
- XM3OD``!=\3OD```)X3OD``!":3OD``!',<&$```/L````!0````````HN```*W
- XM'```"B@```HB```*%@````````/R```#Z@```,\````!``````````$`````-
- XM`````0`````````!```````````````!``````````$``````````0``````%
- XM```!`````0`````````!``````````$``````````0``````````````````%
- XM`````````````````````````````````````````````````````````````
- XM`````````````````/____\`````_____P````#_____`````/__________L
- XM`````/____\`````_____P````#_____``````````#_____`````/____\`L
- XM````_____P````#_____`````0````'_______________\````!_____P``K
- XM``$````H``````````````````````````````%:````````````````````$
- XM```````````````````````!?```````````````````````````````````]
- XM````````````````````````````````````````````````````````@````
- XM``0`__\````.``X```````````````#__P````0`!````````!2V```!J/__5
- XM````!``$````````%,P`````__\````.``X````````6K@````#__P````0`(
- XM!``````````````!Y/__````!``$````````%LH`````__\````$``0`````5
- XM```6U```````("`@("`@("`@*"@H*"@@("`@("`@("`@("`@("`@("!($!`0*
- XM$!`0$!`0$!`0$!`0A(2$A(2$A(2$A!`0$!`0$!"!@8&!@8$!`0$!`0$!`0$!H
- XM`0$!`0$!`0$!`1`0$!`0$(*"@H*"@@("`@("`@("`@("`@("`@("`@("$!`0.
- XM$"`@("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@($@0$!`0$!`0$!`0`
- XM$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!`0$!`0$!_
- XM`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0(```````W
- XM`@````/L````!0````````(L```"&````?````'<```!R`````0````"```"=
- X5"````<P```%:```!.`````````/R>
- X``
- Xend
- Xsize 9696
- END_OF_FILE
- if test 13612 -ne `wc -c <'draughts.uu'`; then
- echo shar: \"'draughts.uu'\" unpacked with wrong size!
- fi
- # end of 'draughts.uu'
- fi
- echo shar: End of archive 1 \(of 1\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have the archive.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
- Mail comments to the moderator at <amiga-request@uunet.uu.net>.
- Post requests for sources, and general discussion to comp.sys.amiga.misc.
-